package com.example.demo02;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.context.WebServerApplicationContext;
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;

/*
	spingboot所有自动配置都是在启动的时候扫描并加载 spring.factories 所有的自动配置类
	但是不是都生效果，要判断条件是否成立，只要导入了对应的start,就有了对应的启动器，有了启动器，自动装配才会生效，然后配置成功！

	1.springboot启动时，从类路径 /META-INF/spring.factories 获取指定的值。将这些自动配置类导入容器，自动配置就会生效！springboot现在帮我们配置！
	2.整合javaEE,解决方案和自动配置东西都在 spring-boot-autoconfigure.RELEASE.jar包下，他会吧需要导入的组件，以类名方式返回，这些组件就会被添加到容器
 */

@SpringBootApplication
public class Demo02Application {

	public static void main(String[] args) {
		//SpringApplication.run(Demo01Application.class, args);
		WebServerApplicationContext context = (WebServerApplicationContext) SpringApplication.run(Demo02Application.class, args);
		int port = context.getWebServer().getPort();
		System.out.println("应用程序正在运行，端口号：" + port);
	}

	/*这里修改端口号，优先级高于application.properties配置文件修改端口号优先级*/
	//@Bean
	//public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {
	//	return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
	//		@Override
	//		public void customize(ConfigurableWebServerFactory factory) {
	//			factory.setPort(8888);  // 设置自定义的端口号
	//		}
	//	};
	//}

}
